package com.hwua.view;

import com.hwua.domain.Car;
import com.hwua.service.CarService;
import com.hwua.serviceimpl.CarServiceImpl;
import com.hwua.util.InputTools;
import com.hwua.util.PrintTransformTools;

import java.util.List;

/**
 * 管理员主界面
 * @author admin
 */
public class AdminView extends AbstractView{
    /**
     * 出租状态变量，保存出租状态的中文字符串
     */
    private String rentStatus;
    /**
     * 上架状态变量，保存上架状态的中文字符串
     */
    private String putawayStatus;
    @Override
    public AbstractView showView() {
        System.out.println("============================================<<汽车查询界面>>=============================================================");
        System.out.println("编号\t汽车名称\t\t备注\t\t\t品牌\t\t类型\t\t颜色\t\t日租金\t\t是否可租\t\t是否上架");
        CarService cs = new CarServiceImpl();
        List<Car> carList = cs.findAllCar();
        for (Car car : carList) {
            if(car.getRentStatus()==0){
                rentStatus="可租";
            }else{
                rentStatus="不可租";
            }
            if(car.getPutAwayStatus()==0){
                putawayStatus="上架";
            }else {
                putawayStatus="下架";
            }
            String brandStr = PrintTransformTools.BrandTransForm(car.getBrand());
            String typeStr = PrintTransformTools.TypeTransForm(car.getType());
            System.out.println(car.getCarId()+"\t\t"+car.getCarName()+"\t\t\t"+car.getCarRemark()+"\t\t"+ brandStr
                    +"\t\t"+typeStr+"\t\t"+car.getColor()+"\t\t"+car.getDailyRent()+"\t\t"+rentStatus+"\t\t\t"+putawayStatus);
        }
        System.out.println("====================================================================================================================");
        System.out.println("输入0：           退出");
        System.out.println("输入1+汽车编号：  查看指定汽车");
        System.out.println("输入2：           查看全部汽车");
        System.out.println("输入3：           添加汽车");
        System.out.println("输入4+汽车编号：  修改汽车信息");
        System.out.println("输入5：           查看汽车租赁记录");
        System.out.println("输入6：           查看用户信息");
        while (true){
            String choose = InputTools.nextString();
            //使用正则表达式匹配录入的字符串是否符合“1+1”或者“1” 格式
            boolean matches = choose.matches("[0-9]{1}(\\+\\d+)?");
            if(matches){
                //判断键盘录入的字符串长度是否大于1，如果大于1，则截取
                if(choose.length()>1) {
                    //通过String类的split方法分割字符串
                    String[] strings = choose.split("\\+");
                    //  获得键盘录入字符串中 + 号前面的字符并转换成int类型
                    int num1 = Integer.parseInt(String.valueOf(strings[0]));
                    //  键盘录入字符串中 + 号后面的字符并转换成int类型
                    int num2 = Integer.parseInt(String.valueOf(strings[1]));
                    switch (num1){
                        case 1:
                            nextView = new FindCarByCarIdView(num2);
                            break;
                        case 4:
                            for (Car car : carList) {
                                if(car.getPutAwayStatus()==0){
                                    int carId = car.getCarId();
                                    if (carId==num2){
                                        nextView=new AlterCarByCarIdView(num2);
                                        break;
                                    }else{
                                        nextView=new AdminView();
                                    }
                                }
                            }
                            break;
                        default:
                            System.out.println("超过可选范围，请重新输入：");
                            continue;
                    }
                }else{
                    switch (choose){
                        case "0":
                            nextView = null;
                            break;
                        case "2":
                            nextView = new AdminView();
                            break;
                        case "3":
                            nextView = new AddCarView();
                            break;
                        case "5":
                            nextView = new AdminLookRecordView();
                            break;
                        case "6":
                            nextView = new AdminInformationView();
                            break;
                        default:
                            System.out.println("超过可选范围，请重新输入：");
                            continue;
                    }
                }
                break;
            }else{
                System.out.println("输入有误，请重新输入：");
            }
        }
        return nextView;
    }
}
